/**
 * creater:han.wen
 * create time:2016/6/25
 * describe：单选,多选,全选，级联选择相关服务。
 **/
APP.service('SelectService', [function () {
  /**
   * 选择模式
   * @param data  bool值数组
   * @param mode  模式 0-单选 1-多选 2-全选 3-全不选 4-反选
   * @param index  选择第几个
   */
  this.selectMode = function (data, mode, index) {
    var i;
    switch (mode) {
      case 0:
        for (i = 0; i < data.length; i++) {
          if (i == index) {
            if (!data[i]) {
              data[i] = true;
            }
          } else {
            if (data[i]) {
              data[i] = false;
            }
          }
        }
        break;
      case 1:
        data[index] = !data[index];
        break;
      case 2:
        for (i = 0; i < data.length; i++) {
          data[i] = true;
        }
        break;
      case 3:
        for (i = 0; i < data.length; i++) {
          data[i] = false;
        }
        break;
      case 4:
        for (i = 0; i < data.length; i++) {
          data[i] = !data[i];
        }
        break;
    }
    return data;
  };

  /**
   * 单选初始化--选中首个
   * @param data  数据数组
   */
  this.singleInit = function (data) {
    var selectArray = [];
    for (var i = 0; i < data.length; i++) {
      //默认选中第一个
      if (i == 0) {
        selectArray.push(true);
      } else {
        selectArray.push(false);
      }
    }
    return selectArray;
  };

  /**
   * 单选初始化--不选中
   * @param data  数据数组
   */
  this.singleInitUnselected = function (data) {
    var selectArray = [];
    for (var i = 0; i < data.length; i++) {
      selectArray.push(false);
    }
    return selectArray;
  };

  /**
   * 数据不一致--转化
   * @param data  数据数组
   * @param param  数据属性
   */
  this.transformIn = function (data, param) {
    var selectArray = [];
    for (var i = 0; i < data.length; i++) {
      selectArray.push(data[i][param]);
    }
    return selectArray;
  };

  /**
   * 数据不一致--转化
   * @param data  数据数组
   * @param param  数据属性
   * @param boolData  bool值数组
   */
  this.transformOut = function (data, param, boolData) {
    for (var i = 0; i < data.length; i++) {
      data[i][param] = boolData[i];
    }
    return data;
  };

  /**
   * 上级勾选--下级全选勾选上级
   * @param data  数据数组
   * @param param  数据属性
   */
  this.upperTotalSelect = function (data, param) {
    for (var i = 0; i < data.length; i++) {
      if (param) {
        if (!data[i][param]) {
          return false;
        }
      } else {
        if (!data[i]) {
          return false;
        }
      }
    }
    return true;
  };


  /**
   * 上级勾选--只要下级选一个勾选上级
   * @param data  数据数组
   * @param param  数据属性
   */
  this.upperSingleSelect = function (data, param) {
    for (var i = 0; i < data.length; i++) {
      if (param) {
        if (data[i][param]) {
          return true;
        }
      } else {
        if (data[i]) {
          return true;
        }
      }
    }
    return false;
  };
}
]);
